#ifndef __CN_DATA_FLASH_H__
#define __CN_DATA_FLASH_H__
#include <string.h>
#include "wm_include.h"
#include "wm_internal_flash.h"
#include "wm_flash_map.h"
#include "wm_internal_flash.h"

//#define  PARA_DATA_ADDR    (USER_ADDR_START + INSIDE_FLS_SECTOR_SIZE) 
#define  PARA_DATA_ADDR    (USER_ADDR_START - FLASH_BASE_ADDR) 
//#define  PARA_DATA_ADDR    0x1F0303
#define  CLIENT_TYPE    1
#define  SERVER_TYPE    2

#define  DEV_NAME_SIZE      128
#define  APSTA_SSID_SIZE    33
#define  APSTA_PWD_SIZE     65
#define  TMP_SIZE           100

#pragma pack(1)
typedef struct network_para
{
    u8  network_type;       //工作方式是tcp client还是server

    u32 ap_ip_addr; //ap下的ip地址
    u32 ap_gw_addr;
    u32 ap_msk_addr;

    u32 target_ip;//目标/远程IP
    u32 target_port;//目标/远程端口
    u32 local_port;//本地端口

    char sta_ssid[APSTA_SSID_SIZE]; //设备待连接的AP热点名称
    char sta_pwd[APSTA_PWD_SIZE];  //设备待连接的AP热点密码

    char ap_ssid[APSTA_SSID_SIZE]; //设备自身AP热点名称
    char ap_pwd[APSTA_PWD_SIZE];  //设备自身AP热点密码 

    char dev_name[DEV_NAME_SIZE]; //设备名称
    
    u32 sta_local_ip_addr;  //sta下的ip地址
    u32 sta_local_gw_addr; 
    u32 sta_local_msk_addr;

    u8  tmp[TMP_SIZE];
    u16 crc; //校验
    u8  rear;//尾
}cn_network_para;

#pragma pack()

int network_para_init(void);
int get_ap_message(u32 *ip_addr,u32 *gw_addr,u32 *msk_addr);
int set_ap_message(u32 ip_addr,u32 gw_addr,u32 msk_addr);
int get_net_message(u8 *type, u32 *target_ip,u32 *target_port,u32 *local_port);
int set_net_message(u8 type,u32 target_ip,u32 target_port,u32 local_port);
int get_sta_wifi(char *ssid,char *pwd);
int set_sta_wifi(char *ssid,char *pwd);
int get_ap_wifi(char *ssid,char *pwd);
int set_ap_wifi(char *ssid,char *pwd);
int get_dev_name(char *name);
int set_dev_name(char *name);
int get_local_mac(char *mac);
int set_local_mac(char *mac);
#endif
